function quickSort(arr) {
  if (arr.length <= 1) {  // 如果数组长度小于等于1，直接返回
    return arr;
  }
  const pivotIndex = Math.floor(arr.length / 2);  // 选择基准值
  const pivot = arr.splice(pivotIndex, 1)[0];  // 将基准值从数组中删除，并保存基准值
  const left = [], right = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] < pivot) {  // 将小于基准值的元素放入左子数组
      left.push(arr[i]);
    } else {  // 将大于等于基准值的元素放入右子数组
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat([pivot], quickSort(right));  // 对左右子数组递归进行排序，最终合并为一个有序数组
}

// 示例
const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
console.log(quickSort(arr));  // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
